package unq.edu.cui.tp.arena;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.bindings.NotNullObservable;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.SimpleWindow;
import org.uqbar.arena.windows.WindowOwner;

import unq.edu.cui.tp.dominio.Asignacion;
import unq.edu.cui.tp.modelo.ventanas.CrearAsignacion;
import unq.edu.cui.tp.modelo.ventanas.EstaDisponibleTransformer;
import unq.edu.cui.tp.modelo.ventanas.PlanificarUnaFecha;


public class PlanificarUnaFechaWindow extends SimpleWindow<PlanificarUnaFecha> {

	public PlanificarUnaFechaWindow(WindowOwner parent, PlanificarUnaFecha model) {
		super(parent, model);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void addActions(Panel actionsPanel) {
		new Button(actionsPanel).setCaption("Agregar asignacion").onClick(new MessageSend(this, "agregarAsignacion"));
		Button quitarAsignacion = new Button(actionsPanel);
		quitarAsignacion.setCaption("Quitar asignacion").onClick(new MessageSend(this, "eliminarAsignacion"));

		// Deshabilitar el boton 'Borrar' si no hay ningún elemento seleccionado en la tabla.
		NotNullObservable elementSelected = new NotNullObservable("asignacionSeleccionada");
		quitarAsignacion.bindEnabled(elementSelected);
	}

	@Override
	protected void createFormPanel(Panel mainPanel) {
		this.setTitle("Planificar horarios");
		new Label(mainPanel).setText("Planificacion para el " + this.getModelObject().getPlanificacion().getFechaSimple());
		this.createGrid(mainPanel);

	}
	
	protected void createGrid(Panel mainPanel) {
		Table<Asignacion> table = new Table<Asignacion>(mainPanel, Asignacion.class);
		table.setHeigth(200);
		table.setWidth(450);

		table.bindItemsToProperty("planificacion.asignaciones");
		table.bindValueToProperty("asignacionSeleccionada");

		this.describeGrid(table);
	}
	
	protected void describeGrid(Table<Asignacion> table) {
		new Column<Asignacion>(table).setTitle("Empleado").setFixedSize(150).bindContentsToProperty("empleado.nombre");
		
		int i = 0;
		while(i <= 23){
			new Column<Asignacion>(table).setTitle(""+ i).setFixedSize(30).bindContentsToTransformer(new EstaDisponibleTransformer(i));
			i++;
		}

	}
	
	//Acciones de botones
	public void agregarAsignacion(){
		new CrearAsignacionWindow(this, new CrearAsignacion(this.getModelObject().getSistema(), this.getModelObject().getPlanificacion())).open();
	}
	
	public void eliminarAsignacion(){
		this.getModelObject().eliminarAsignacion(this.getModelObject().getAsignacionSeleccionada());
	}

}
